#include<bits/stdc++.h>
using namespace std;
const int inf=0x3f3f3f3f;
int minb=inf;

// void dfs(int dep,int k,int sum,int cnt){
//     if(dep==k){
//         if(sum==cnt){
//             minb=min(minb,sum);
//         }
//         if(sum+1==cnt+1){
//             minb=min(minb,sum+1);
//         }
//         return;
//     }
//     if(dep==1){
//         dfs(dep+1,k,(sum+1)<<1,cnt+1);
//         return;
//     }
//     dfs(dep+1,k,sum<<1,cnt);
//     dfs(dep+1,k,(sum<<1)+1,cnt+1);
// }

string to2(int b,int k){
    string res="";
    while(k--){
        if(b&1)res='1'+res;
        else res='0'+res;
        b>>=1;
    }
    //if(res=="")return "0";
    return res;
}

int coun(int n){
    int cnt=0;
    while(n>0){
        if(n&1)cnt++;
        n>>=1;
    }
    return cnt;
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    unordered_map<int,int>mp;
    for(int i=1;i<=(1<<21);i++){
        int temp=i;
        int cnt=0;
        while(temp){
            if(temp&1)cnt++;
            temp>>=1;
        }
        mp[i]=cnt;
    }
    int T=1;
    cin>>T;
    for(int _=0;_<T;_++){
        int n,k,cnt=0;
        cin>>n>>k;
        string a;
        cin>>a;
        for(int i=0;i<a.size();i++){
            if(a[i]=='1') cnt++;
        }
        int f=1;
        int minb=inf;
        for(int i=0;i<=k;i++){
            int temp=cnt+i;
            temp=(temp&((1<<k)-1));
            if(mp[temp]==i){
                f=0;
                minb=min(minb,temp);
            }
        }
        if(f)cout<<"None"<<endl;
        else {
            cout<<to2(minb,k)<<endl;
        }
    }
    return 0;
}